package com.ionehe.group.common.uaa.ex.application.rest;

import cn.hutool.core.map.MapUtil;
import com.google.common.collect.Lists;
import com.ionehe.group.common.io.Paging;
import com.ionehe.group.common.io.Response;
import com.ionehe.group.common.uaa.ex.domain.service.UaaDataItemService;
import com.ionehe.group.common.uaa.ex.dto.UaaDataItemDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * uaa数据项信息表(UaaDataItem)控制层
 *
 * @author makejava
 * @since 2021-12-27 17:07:25
 */
@RestController
@RequestMapping("/api/common/dataItem")
@Api(value = "uaa-数据项信息管理相关服务", tags = "uaa-公共服务")
public class UaaDataItemController {
    @Autowired
    private UaaDataItemService service;

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @ApiOperation(hidden = true, value = "通过ID查询")
    @GetMapping
    public Response<UaaDataItemDTO> queryById(Long id) {
        return service.queryById(id);
    }

    /**
     * 通过code查询多条数据
     *
     * @param code 主键
     * @return 单条数据
     */
    @ApiOperation(hidden = false, value = "通过code查询数据项")
    @GetMapping("/queryByCode")
    public Response<List<UaaDataItemDTO>> queryByCode(String code) {
        return service.queryByCode(code);
    }
    
    /**
     * @param pageNum      当前页
     * @param pageSize     查询条数
     * @return 对象列表
     */
    @ApiOperation(hidden = true, value = "分页查询多条数据")
    @GetMapping("/paging")
    public Response<Paging<UaaDataItemDTO>> paging(Integer pageNum, Integer pageSize) {
        Map<String, String> conditions = MapUtil.newHashMap();

        return service.paging(pageNum, pageSize, conditions);
    }
    
    /**
     * 新增数据
     *
     * @param uaaDataItemDTO 实例对象
     * @return 是否成功
     */
    @ApiOperation(hidden = true, value = "新增数据")
    @PostMapping("/insert")
    public Response<Boolean> insert(@RequestBody UaaDataItemDTO uaaDataItemDTO) {
        return service.insert(uaaDataItemDTO);
    }
    
     /**
     * 修改数据
     *
     * @param  uaaDataItemDTO 实例对象
     * @return 是否成功
     */
    @ApiOperation(hidden = true, value = "修改数据")
    @PostMapping("/update")
    public Response<Boolean> update(@RequestBody UaaDataItemDTO uaaDataItemDTO) {
        return service.update(uaaDataItemDTO);        
    }

    /**
     * 通过主键删除数据
     *
     * @param  id 主键
     * @return 是否成功
     */
    @ApiOperation(hidden = true, value = "通过主键删除数据")
    @GetMapping("/del")
    public Response<Boolean> del(Long id) {
        return service.del(Lists.newArrayList(id));
    }
}